//
// Copyright (c) 2011 All Right Reserved
//
// vl
//
// 2011-01-01
using System.Globalization;
using System.Runtime.InteropServices;
using JetBrains.Annotations;
namespace LargoCommon.Midi
{
///
/// Initializes a new instance of the MidiDevice class.
///
public sealed class MidiDeviceItem {
///
/// Initializes a new instance of the MidiDeviceItem class.
///
/// Device Id.
public MidiDeviceItem(int deviceId) {
var moc = new MidiOutcaps(0, 0, 0, string.Empty, 0, 0, 0, 0, 0);
MidiInternalDevices.GetDeviceCaps(deviceId, ref moc, Marshal.SizeOf(moc));
this.MidiOutcaps = moc;
}
#region Public properties
///
/// Gets Device Name.
///
/// General musical property.
public string Name => this.MidiOutcaps.ProductName;
///
/// Gets Device Driver.
///
/// General musical property.
[UsedImplicitly]
public string Driver => string.Format(CultureInfo.InvariantCulture, "{0}/{1}", this.MidiOutcaps.Technology, this.MidiOutcaps.DriverVersion);
/* MidiOutcaps - Channels ?!
///
/// Gets Device Channels.
///
/// General musical property.
public string Channels => this.MidiOutcaps.ChannelMask.ToString(CultureInfo.InvariantCulture);
*/
///
/// Gets Device Notes.
///
/// General musical property.
public string Notes => this.MidiOutcaps.Notes.ToString(CultureInfo.InvariantCulture);
///
/// Gets Device Voices.
///
/// General musical property.
public string Voices => this.MidiOutcaps.Voices.ToString(CultureInfo.InvariantCulture);
///
/// Gets Device functions.
///
/// General musical property.
public string Functions => string.Format(CultureInfo.InvariantCulture, "{0}/{1}/{2}", this.MidiOutcaps.ManufacturerIdentifier, this.MidiOutcaps.ProductIdentifier, this.MidiOutcaps.Support);
#endregion
#region Private properties
///
/// Gets Midi Out capabilities.
///
/// General musical property.
private MidiOutcaps MidiOutcaps { get; }
#endregion
}
}